package shujujiegou;

public class Linked {// 先建一个头结点，
    Node head = null;  //头结点

    class Node{  //链表中的节点
        Node next = null;//指向下一个节点,在类里定义属性，下面就是可以直接用
        int data;//节点的数据

        public Node (int data) {
            this.data = data;
        }
    }

    public void addNode(int d){  //向链表中插入数据
        Node node1 = new Node(d);
        if (head == null){
            head = node1;
            return;
        }
        Node temp = head;  //第一个节点是头结点
        while(temp.next != null){
            temp = temp.next;//遍历，这个节点不为空就指向下一个节点next是符号，是属性
        }
        temp.next = node1;
    }

    public int length(){  //返回节点的长度
        int length = 0;
        Node temp = head;
        while (temp != null){
            length++;
            temp = temp.next;
        }
        return length;
    }


    public boolean deleteNode(int index){ //删除第index个节点
        if (index < 1 || index > length()){
            return false;
        }
        if(index == 1){
            head = head.next;
            return true;
        }
        int l = 1;   //找删除位置节点的前一个节点
        Node temp = head;
          //写法，为什么定义个变量可以一直用
        while (temp != null){
            if (l + 1 == index){
                temp.next = temp.next.next;
                return true;
            }
            temp = temp.next;
            l++;
        }
        return false;
    }





}
